package com.example.yls.demoa;

import android.media.MediaPlayer;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {
    private static final int MSG_PROGRESS_CHAGED = 1001;
    private Button b1;
    private Button b2;
    private Button b3;
    private TextView txtCur;
    private TextView txtTotal;
    private MediaPlayer mediaPlayer;
    private SeekBar seekBar;
    private boolean isPause = false;
    private Handler handler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b1=findViewById(R.id.bt1);
        b2=findViewById(R.id.bt2);
        b3=findViewById(R.id.bt3);
        seekBar=findViewById(R.id.seekBar);
        txtCur = findViewById(R.id.txtCur);
        txtTotal = findViewById(R.id.txtTotal);
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (mediaPlayer == null) {
                    mediaPlayer = new MediaPlayer();
                    try {
                        mediaPlayer.setDataSource("/mnt/shared/Other/siji2.mp3");
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    mediaPlayer.prepareAsync();
                    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                        @Override
                        public void onPrepared(MediaPlayer mediaPlayer) {
                                mediaPlayer.start();
                        }
                    });
                }else{
                    mediaPlayer.start();
                }

            }
        });
        b2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(mediaPlayer!= null&&mediaPlayer.isPlaying()){
                    mediaPlayer.pause();
                }
            }
        });
        handler = new Handler(new Handler.Callback(){
            public boolean handleMessage(Message message) {
                if(message.what == MSG_PROGRESS_CHAGED){
                    int position = message.arg1;
                    int duration = message.arg2;
                    txtCur.setText(getTimeStr(position));
                    txtTotal.setText(getTimeStr(duration));
                }


                return false;
            }
        });
        new Thread(new Runnable() {
                    @Override
                    public void run() {
                        while (true){
                            if (mediaPlayer!=null&&mediaPlayer.isPlaying()){
                                int position = mediaPlayer.getCurrentPosition();
                                int duration = mediaPlayer.getDuration();
                                int progress = 100*position/duration;
                                seekBar.setProgress(progress);

                                Message message = new Message();
                                message.what =MSG_PROGRESS_CHAGED;
                                message.arg1 = position;
                                message.arg2 = duration;
                                handler.sendMessage(message);
                            }
                            try {
                               Thread.sleep(500);
                            }catch (InterruptedException e){
                                e.printStackTrace();
                            }
                        }
                    }
                }).start();
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                if (mediaPlayer!=null){
                    int progress = seekBar.getProgress();
                    int total = mediaPlayer.getDuration();
                    int position = total*progress/100;
                    mediaPlayer.seekTo(position);
                }
            }
        });
            }

    private String getTimeStr(int time) {
        int second = time / 1000;
        int min = second / 60;
        second = second % 60;

        StringBuffer buffer = new StringBuffer();
        if(min < 10){
            buffer.append("0");
        }

        buffer.append(min);
        buffer.append(":");

        if(second < 10){
            buffer.append("0");
        }
        buffer.append(second);

        return  buffer.toString();
    }
}



